/**
 * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
 */
package com.jeesite.modules.storage.service;

import com.jeesite.common.entity.Page;
import com.jeesite.common.service.CrudService;
import com.jeesite.modules.storage.common.TradeType;
import com.jeesite.modules.storage.dao.TradeDao;
import com.jeesite.modules.storage.entity.Trade;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Map;


/**
 * 交易Service
 */
@Service
@Transactional(readOnly=true)
public class TradeService extends CrudService<TradeDao, Trade> {

	/**
	 * 获取会员交易汇总
	 * @param memberId 会员Id
	 * @param monthDate 月份
	 * @return 会员交易汇总
	 */
	public Double getStatisticsByMemberId(String memberId,String monthDate){
		return dao.findStatisticsByMemberId(memberId,monthDate);
	}

	/**
	 * 获取会员银行卡列表
	 * @param memberId 会员Id
	 * @param monthDate 月份
	 * @param size 每页数量
	 * @param page 页码
	 * @return 会员银行卡列表
	 */
	@Transactional(readOnly=false)
	public List<Map> getListByMemberId(String memberId,String monthDate, Integer size, Integer page) {
		return dao.findListByMemberId(memberId,monthDate,size * (page - 1) , size);
	}

	/**
	 * 保存
	 * @param memberId 会员Id
	 * @param bankId 银行卡Id
	 * @param amount 交易金额
	 * @return 结果
	 */
	@Transactional(readOnly=false)
	public Integer save(String memberId, String bankId, Double amount) {
		Trade trade = new Trade();
		trade.setMemberId(memberId);
		trade.setType(TradeType.CASH);
		trade.setBankId(bankId);
		trade.setAmount(amount);
		trade.setStatus("待到账");
		super.save(trade);
		return 200;
	}

	/**
	 * 查找交易列表【管理端】
	 * @param name 名称
	 * @param contact 联系人
	 * @param phone 手机号
	 * @param status 状态
	 * @param size 每页数量
	 * @param page 页码
	 * @return 订单列表
	 */
	public List<Map> getListForManage(String name, String contact, String phone, String status, Integer size, Integer page){
		return dao.findListForManage( name,contact,phone,status,size * (page - 1),size);
	}

	/**
	 * 查找交易列表【管理端】
	 * @param name 名称
	 * @param contact 联系人
	 * @param phone 手机号
	 * @param status 状态
	 * @param size 每页数量
	 * @param page 页码
	 * @return 订单列表
	 */
	public Page<Map> getListPageForManage(String name, String contact, String phone, String status, Integer size, Integer page){
		Page<Map> mapPage = new Page<>();
		mapPage.setCount(dao.findListCountForManage(name,contact,phone,status));
		mapPage.setPageSize(size);
		mapPage.setPageNo(page);
		mapPage.setList(getListForManage(name,contact,phone,status,size,page));
		return mapPage;
	}
}
